home *** CD-ROM | disk | FTP | other *** search
/ Sky at Night 2007 June / SAN CD 6-2007 CD-ROM 25.iso / pc / Software / AstroGrav_Win / Java / jre1.6.0 / lib / rt.jar / java / security / MessageDigestSpi.class (.txt) < prev    next >
Encoding:
Java Class File  |  2006-11-29  |  1.4 KB  |  68 lines

  1. package java.security;
  2.  
  3. import java.nio.ByteBuffer;
  4. import sun.security.jca.JCAUtil;
  5.  
  6. public abstract class MessageDigestSpi {
  7.    private byte[] tempArray;
  8.  
  9.    protected int engineGetDigestLength() {
  10.       return 0;
  11.    }
  12.  
  13.    protected abstract void engineUpdate(byte var1);
  14.  
  15.    protected abstract void engineUpdate(byte[] var1, int var2, int var3);
  16.  
  17.    protected void engineUpdate(ByteBuffer var1) {
  18.       if (var1.hasRemaining()) {
  19.          if (var1.hasArray()) {
  20.             byte[] var2 = var1.array();
  21.             int var3 = var1.arrayOffset();
  22.             int var4 = var1.position();
  23.             int var5 = var1.limit();
  24.             this.engineUpdate(var2, var3 + var4, var5 - var4);
  25.             var1.position(var5);
  26.          } else {
  27.             int var6 = var1.remaining();
  28.             int var7 = JCAUtil.getTempArraySize(var6);
  29.             if (this.tempArray == null || var7 > this.tempArray.length) {
  30.                this.tempArray = new byte[var7];
  31.             }
  32.  
  33.             while(var6 > 0) {
  34.                int var8 = Math.min(var6, this.tempArray.length);
  35.                var1.get(this.tempArray, 0, var8);
  36.                this.engineUpdate(this.tempArray, 0, var8);
  37.                var6 -= var8;
  38.             }
  39.          }
  40.  
  41.       }
  42.    }
  43.  
  44.    protected abstract byte[] engineDigest();
  45.  
  46.    protected int engineDigest(byte[] var1, int var2, int var3) throws DigestException {
  47.       byte[] var4 = this.engineDigest();
  48.       if (var3 < var4.length) {
  49.          throw new DigestException("partial digests not returned");
  50.       } else if (var1.length - var2 < var4.length) {
  51.          throw new DigestException("insufficient space in the output buffer to store the digest");
  52.       } else {
  53.          System.arraycopy(var4, 0, var1, var2, var4.length);
  54.          return var4.length;
  55.       }
  56.    }
  57.  
  58.    protected abstract void engineReset();
  59.  
  60.    public Object clone() throws CloneNotSupportedException {
  61.       if (this instanceof Cloneable) {
  62.          return super.clone();
  63.       } else {
  64.          throw new CloneNotSupportedException();
  65.       }
  66.    }
  67. }
  68.